import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'colors.dart';

/// 主题管理器
/// 使用响应式变量自动处理深浅模式切换
class ThemeManager extends GetxController {
  static ThemeManager get to => Get.find<ThemeManager>();
  
  /// 当前是否为深色模式
  final RxBool isDarkMode = false.obs;
  
  /// 获取当前主题模式
  bool get isDark => isDarkMode.value;
  
  /// 切换主题模式
  void toggleTheme() {
    isDarkMode.value = !isDarkMode.value;
    Get.changeThemeMode(isDarkMode.value ? ThemeMode.dark : ThemeMode.light);
  }
  
  /// 设置主题模式
  void setThemeMode(bool isDark) {
    isDarkMode.value = isDark;
    Get.changeThemeMode(isDark ? ThemeMode.dark : ThemeMode.light);
  }
  
  /// 根据当前主题获取颜色
  Color getColor(Color lightColor, Color darkColor) {
    return isDarkMode.value ? darkColor : lightColor;
  }
  
  /// 根据当前主题获取渐变色
  List<Color> getGradientColors({
    required List<Color> lightColors,
    required List<Color> darkColors,
  }) {
    return isDarkMode.value ? darkColors : lightColors;
  }
  
  /// 获取背景渐变色
  List<Color> get backgroundGradientColors {
    return getGradientColors(
      lightColors: [
        Colours.light_gradient_top_left,
        Colours.light_gradient_top_right,
        Colours.light_gradient_bottom,
        Colours.light_gradient_bottom,
      ],
      darkColors: [
        Colours.dark_gradient_top_left,
        Colours.dark_gradient_top_right,
        const Color.fromARGB(153, 68, 22, 18),
        Colours.dark_gradient_bottom,
      ],
    );
  }
  
  /// 获取导航栏背景色
  Color get navigationBarBackgroundColor {
    return getColor(
      const Color.fromRGBO(245, 245, 245, 0.35),
      const Color.fromRGBO(40, 37, 40, 0.35),
    );
  }
  
  /// 获取导航栏未选中颜色
  Color get navigationBarUnselectedColor {
    return getColor(
      Colours.unselected_item_color,
      Colours.dark_unselected_item_color,
    );
  }
  
  /// 获取通用卡片背景色
  Color get generalCardBackgroundColor {
    return getColor(Colors.white, Colours.dark_material_bg);
  }
  
  /// 获取文本颜色
  Color get textColor {
    return getColor(Colours.text, Colours.dark_text);
  }
  
  /// 获取次要文本颜色
  Color get textSecondaryColor {
    return getColor(Colours.text_gray, Colours.dark_text_gray);
  }
  
  /// 获取边框颜色
  Color get borderColor {
    return getColor(Colours.line, Colours.dark_line);
  }
  
  // ========== 身体状况页面专用颜色 ==========
  /// 主要文字颜色（身体状况标题等）
  Color get primaryTextColor {
    return getColor(Colors.black87, const Color(0xFFF9F8F7));
  }
  
  /// 次要文字颜色（Monday....）
  Color get secondaryTextColor {
    return getColor(const Color(0xffF9F8F7), const Color(0xffF9F8F7));
  }
  
  /// 辅助文字颜色（分数、描述等）
  Color get tertiaryTextColor {
    return getColor(Colors.grey[600]!, Colors.grey[400]!);
  }

  ///自定义按钮颜色
  Color get buttonTextColor {
    return getColor(Colors.grey[600]!, const Color(0xff908E8D));
  }
  
  /// 占位符文字颜色（-- 等）
  Color get placeholderTextColor {
    return getColor(Colors.grey[500]!, Colors.grey[500]!);
  }
  
  /// 未激活状态文字颜色
  Color get inactiveTextColor {
    return getColor(Colors.black54, Colors.grey[300]!);
  }
  
  /// 卡片背景颜色
  Color get cardBackgroundColor {
    return getColor(Colors.grey[100]!, Colors.grey[800]!);
  }
  
  /// 次要背景颜色（异常检测提示等）
  Color get secondaryBackgroundColor {
    return getColor(Colors.grey[50]!, Colors.grey[800]!);
  }
  
  /// 未激活状态背景颜色（日期圆圈等）
  Color get inactiveBackgroundColor {
    return getColor(Colors.grey[300]!, Colors.black); // 深色模式下使用纯黑色
  }
  
  /// 主要图标颜色
  Color get primaryIconColor {
    return getColor(Colors.grey[500]!, Colors.grey[400]!);
  }
  
  /// 次要图标颜色
  Color get secondaryIconColor {
    return getColor(Colors.grey[600]!, Colors.grey[400]!);
  }
  
  /// 激活状态颜色（橙色）
  Color get activeColor => const Color(0xffED5C2F);
  
  /// 序号圆圈背景颜色
  Color get numberCircleBackgroundColor {
    return getColor(Colors.grey[400]!, Colors.grey[600]!);
  }
  
  @override
  void onInit() {
    super.onInit();
    // 初始化时设置为深色模式（根据您的需求）
    isDarkMode.value = true;
  }
}
